]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Bug 589260 - Don't replace panel in Xephyr mode
authorColin Walters <walters@verbum.org>
Wed, 29 Jul 2009 19:05:05 +0000 (15:05 -0400)
committerColin Walters <walters@verbum.org>
Wed, 29 Jul 2009 21:47:34 +0000 (17:47 -0400)
Avoid grabbing the org.gnome.Panel name if we're running in
Xephyr, since that affects the main desktop.

src/gnome-shell.in [changed mode: 0755->0644]
src/shell-global.c

old mode 100755 (executable)
new mode 100644 (file)
index eccea6c..9622029
@@ -273,6 +273,8 @@ if options.debug:
 try:
     if run_in_xephyr:
         shell = start_xephyr()
+        # This makes us not grab the org.gnome.Panel name
+        os.environ['GNOME_SHELL_NO_REPLACE_PANEL'] = '1'
         start_shell()
     else:
         if gnome_panel_pid is not None:
index 0c70e302eb6e72b9b93e0b357ad10f721af6eeb5..575956c16bba4138383662fcddef5c738ab9b976 100644 (file)
@@ -741,18 +741,22 @@ shell_global_grab_dbus_service (ShellGlobal *global)
       exit (0);  
     }
 
-  /* Also grab org.gnome.Panel to replace any existing panel process */
-  if (!dbus_g_proxy_call (bus, "RequestName", &error,
-                          G_TYPE_STRING, "org.gnome.Panel",
-                          G_TYPE_UINT, DBUS_NAME_FLAG_REPLACE_EXISTING | DBUS_NAME_FLAG_DO_NOT_QUEUE,
-                          G_TYPE_INVALID,
-                          G_TYPE_UINT, &request_name_result,
-                          G_TYPE_INVALID))
+  /* Also grab org.gnome.Panel to replace any existing panel process,
+   * unless a special environment variable is passed.  The environment
+   * variable is used by the gnome-shell (no --replace) launcher in
+   * Xephyr */
+  if (!g_getenv ("GNOME_SHELL_NO_REPLACE_PANEL"))
     {
-      g_print ("failed to acquire org.gnome.Panel: %s\n", error->message);
-      exit (1);
+      if (!dbus_g_proxy_call (bus, "RequestName", &error, G_TYPE_STRING,
+                              "org.gnome.Panel", G_TYPE_UINT,
+                              DBUS_NAME_FLAG_REPLACE_EXISTING | DBUS_NAME_FLAG_DO_NOT_QUEUE,
+                              G_TYPE_INVALID, G_TYPE_UINT,
+                              &request_name_result, G_TYPE_INVALID))
+        {
+          g_print ("failed to acquire org.gnome.Panel: %s\n", error->message);
+          exit (1);
+        }
     }
-
   g_object_unref (bus);
 }